/**
 * @date 5:37:40 PM
 * StudentService.java
 * Administrator
 * TODO
 */
package com.qs.education.service;
import javax.transaction.Transactional;

import org.springframework.web.multipart.MultipartFile;

import com.qs.education.bean.api.PageBean;
import com.qs.education.bean.api.ResponseBean;
import com.qs.education.bean.api.ResponseListBean;
import com.qs.education.bean.beans.EducationStudentResponse;
import com.qs.education.bean.entity.EducationStudent;


/**
 * @class StudentService	
 * @author Warren
 * @description
 * @date Oct 31, 2018 
 */
public interface IStudentAPIService{
	
	/**
	 * @author Warren
	 * @param id
	 * @return EducationStudentResponse
	 * @description
	 * @date Nov 20, 2018
	 */
	public EducationStudentResponse getEducationStudent(Long id);
	
	/**
	 * @author Warren
	 * @param educationStudent
	 * @return ResponseBean
	 * @description 学生注册
	 * @date Nov 6, 2018
	 */
	@Transactional
	public ResponseBean register(EducationStudent educationStudent);
	
	/**
	 * @author Warren
	 * @param mobile
	 * @param password
	 * @return EducationStudentResponse
	 * @description 学生登录
	 * @date Nov 6, 2018
	 */
	@Transactional
	public EducationStudentResponse login(String mobile,String password);
	
	/**
	 * @author Warren
	 * @param educationStudent
	 * @return ResponseBean
	 * @description 学生退出app登录
	 * @date Nov 6, 2018
	 */
	@Transactional
	public ResponseBean exit(String mobile);
	
	/**
	 * @author Warren
	 * @param mobile 手机号
	 * @param password 新密码
	 * @return ResponseBean
	 * @description 重置密码
	 * @date Nov 6, 2018
	 */
	@Transactional
	public ResponseBean resetPwd(String mobile,String password);
	
	/**
	 * @author Warren
	 * @param mobile
	 * @return ResponseBean
	 * @description 根据手机号查询是否已注册
	 * @date Nov 7, 2018
	 */
	public ResponseBean mobileIsRepeat(String mobile);
	
	/**
	 * @author Warren
	 * @param educationStudentJSON
	 * @param file
	 * @param schoolId
	 * @param gradeId
	 * @param classId
	 * @param appAddress
	 * @return ResponseBean
	 * @description 修改学生信息
	 * @date Nov 20, 2018
	 */
	public ResponseBean updateStudentInfo(String educationStudentJSON,MultipartFile file,String schoolId,String gradeId,String classId,String appAddress);
	
	/**
	 * @author Warren
	 * @param mobile 手机号
	 * @param oldPassword 原密码
	 * @param newPassword 新密码
	 * @return ResponseBean
	 * @description 修改密码
	 * @date Nov 20, 2018
	 */
	public ResponseBean changePwd(String mobile,String oldPassword,String newPassword);
	
	/**
	 * @author Warren
	 * @param groupId 
	 * @param studentId
	 * @return ResponseBean
	 * @description 学生主动退出班群
	 * @date Nov 20, 2018
	 */
	public ResponseBean exitGroup(Long groupId,Long studentId);
	
	/**
	 * @Description 查询所有学生
	 * @author Jason
	 * @param pageSize 
	 * @param currentPage 
	 * @param student 
	 * @date Nov 8, 2018
	 * @return
	 */
	public PageBean getEducationStudent(EducationStudent student, Integer currentPage, Integer pageSize);

	/**
	 * @Description 根据ID删除学生
	 * @author Jason
	 * @date Nov 8, 2018
	 * @param studentId
	 * @return
	 */
	public Boolean deleteStudentyId(Long studentId);

	/**
	 * @Description 根据ID查询学生
	 * @author Jason
	 * @date Nov 8, 2018
	 * @param studentId
	 * @return
	 */
	public EducationStudentResponse findStudentById(Long studentId);

	/**
	 * @Description 修改学生信息
	 * @author Jason
	 * @date Nov 8, 2018
	 * @param educationStudent
	 * @return
	 */
	public Boolean updateStudent(EducationStudent educationStudent);

	/**
	 * @Description 增加学生信息
	 * @author Jason
	 * @date Nov 9, 2018
	 * @param student
	 * @return
	 */
	public Boolean addStudent(EducationStudent student);

	/**
	 * @Description 根据条件查询学生
	 * @author Jason
	 * @date Nov 12, 2018
	 * @param student
	 * @return
	 */
	public ResponseListBean<EducationStudent> findStudentByCondition(EducationStudent student);
}
